# 需求：
# 1. 在 Dog 类中封装方法 game
# – 普通狗只是简单的玩耍
# 2. 定义 XiaoTianDog 继承自 Dog， 并且重写 game 方法
# – 哮天犬需要在天上玩耍
# 3. 定义 Person 类， 并且封装一个 和狗玩 的方法
# – 在方法内部， 直接让 狗对象 调用 game 方法

# 多态：不同子类对象调用相同父类方法产生不同结果

class Dog(object):
    def game(self):
        print("简单的玩耍")
class XiaoTianDog(Dog):
    def game(self):
        print("在天上玩耍")
class Person(object):
    def play_with_dog(self,dog):
# 狗对象 调用game()
        dog.game()
# 创建对象:不同子类对象就是指  d1  xtq  调用的方法都是game()
d1 = Dog()
d2 = Dog()
xtq = XiaoTianDog()
# 创建人对象
p1 = Person()
p1.play_with_dog(d1)   # 只做一件事：调用狗类里面的game()方法
p1.play_with_dog(xtq)

# 在和狗玩耍的方法中，同时都调用了狗的父类的game()
# 多态：多个不同的子类对象调用相同的父类方法产生了不同的结果